package com.slwu.prototype;

import java.util.Hashtable;

/**
 * 原型管理器（使用饿汉式单例模式）
 */
public class PrototypeManager {

    // 定义一个 Hashtable 存储原型对象
    private Hashtable ht = new Hashtable();
    private static final PrototypeManager pm = new PrototypeManager();
    private PrototypeManager() {
        ht.put("far", new FAR());
        ht.put("srs", new SRS());
    }

    public static PrototypeManager getPrototypeManager() {
        return pm;
    }

    public void add(String key, OfficialDocument doc) {
        ht.put(key, doc);
    }

    /**
     * 通过浅克隆获取新的对象
     * @param key 原型对象名称
     * @return 新对象
     */
    public OfficialDocument get(String key) {
        return ((OfficialDocument) ht.get(key)).clone();
    }
}
